package com.ruoyi.fee.domain;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import jdk.nashorn.internal.objects.annotations.Getter;
import jdk.nashorn.internal.objects.annotations.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 账单信息对象 property_bill
 * 
 * @author ruoyi
 * @date 2025-10-27
 */

public class PropertyBill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 账单ID */
    private Long billId;

    /** 账单编号 */
    @Excel(name = "账单编号")
    private String billNo;

    /** 关联房屋 */
    @Excel(name = "关联房屋")
    private Long houseId;

    /** 费用类型 */
    @Excel(name = "费用类型")
    private Long typeId;

    /** 金额 */
    @Excel(name = "金额")
    private BigDecimal amount;

    /** 计费开始日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计费开始日", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate startDate;

    /** 计费结束日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计费结束日", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate endDate;

    /** 到期日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期日", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate dueDate;

    /** 状态：UNPAID/PAID/OVERDUE */
    @Excel(name = "状态：UNPAID/PAID/OVERDUE")
    private String status;

    /** 违约金 */
    @Excel(name = "违约金")
    private BigDecimal penalty;

    public void setBillId(Long billId) 
    {
        this.billId = billId;
    }

    public Long getBillId() 
    {
        return billId;
    }

    public void setBillNo(String billNo) 
    {
        this.billNo = billNo;
    }

    public String getBillNo() 
    {
        return billNo;
    }

    public void setHouseId(Long houseId) 
    {
        this.houseId = houseId;
    }

    public Long getHouseId() 
    {
        return houseId;
    }

    public void setTypeId(Long typeId) 
    {
        this.typeId = typeId;
    }

    public Long getTypeId() 
    {
        return typeId;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setStartDate(LocalDate startDate)
    {
        this.startDate = startDate;
    }

    public LocalDate getStartDate()
    {
        return startDate;
    }

    public void setEndDate(LocalDate endDate)
    {
        this.endDate = endDate;
    }

    public LocalDate getEndDate()
    {
        return endDate;
    }

    public void setDueDate(LocalDate dueDate)
    {
        this.dueDate = dueDate;
    }

    public LocalDate getDueDate()
    {
        return dueDate;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setPenalty(BigDecimal penalty) 
    {
        this.penalty = penalty;
    }

    public BigDecimal getPenalty() 
    {
        return penalty;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("billId", getBillId())
            .append("billNo", getBillNo())
            .append("houseId", getHouseId())
            .append("typeId", getTypeId())
            .append("amount", getAmount())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("dueDate", getDueDate())
            .append("status", getStatus())
            .append("penalty", getPenalty())
            .append("createTime", getCreateTime())
            .toString();
    }
}
